package com.yxq.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DB {
	private Connection con;

	private PreparedStatement pstm;

	private String user = "root";

	private String password = "mysql";

	private String className = "com.mysql.jdbc.Driver";

	private String url = "jdbc:mysql://localhost/db_CityInfo";

	public DB() {
		try {
			Class.forName(className);
		} catch (ClassNotFoundException e) {
			System.out.println("Error to load database driver!");
			e.printStackTrace();
		}
	}

	public Connection getCon() {
		try {
			con = DriverManager.getConnection(url, user, password);
		} catch (java.sql.SQLException e) {
			System.out.println("Failed to create connection to database!");
			con = null;
			e.printStackTrace();
		}
		return con;
	}

	public void doPstm(String sql, Object[] params) {
		if (sql != null && sql.equals("")) {
			if (params == null)
				params = new Object[0];
			getCon();
			if (con != null) {
				try {
					pstm = con.prepareStatement(sql,
							ResultSet.TYPE_SCROLL_INSENSITIVE,
							ResultSet.CONCUR_READ_ONLY);
					for (int i = 0; i < params.length; i++) {
						pstm.setObject(i + 1, params[i]);
					}
					pstm.execute();
				} catch (SQLException e) {
					System.out.println("Error to doPstm()!");
					e.printStackTrace();
				}
			}
		}
	}

	public ResultSet getRs() throws SQLException {
		return pstm.getResultSet();
	}

	public int getCount() throws SQLException {
		return pstm.getUpdateCount();
	}

	public void closed() {
		try {
			if (pstm != null)
				pstm.close();
		} catch (SQLException e) {
			System.out.println("Failed to close pstm!");
			e.printStackTrace();
		}
		try {
			if (con != null) {
				con.close();
			}
		} catch (SQLException e) {
			System.out.println("Failed to close con!");
			e.printStackTrace();
		}
	}
}
